/*
 * ClienteDaoJdbc.java      1.0   25/02/2011
 *
 * Copyright Grupo 3A UPC
 * All rights reserved.
 *
 * Contiene el manejo para la conexion JDNC para la clase cliente
 */
package pe.edu.upc.dew.grupo3a.dao;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

import pe.edu.upc.dew.grupo3a.model.Cliente;

public class ClienteDaoJdbc extends SimpleJdbcDaoSupport implements
ClienteDao{

	@Override
	public Cliente getClientePorDNI(String dni) {
		try {
			return getSimpleJdbcTemplate()
			.queryForObject(
					"select codigocliente,apellidos,nombres ,edad,sexo,dni,correo,clave " +
					"from cliente " +
					"where dni=?",
					new BeanPropertyRowMapper<Cliente>(Cliente.class),
					dni);
			
		} catch(DataAccessException ex ){
			return null;
		}
	}

	@Override
	public void actualizarCliente(Cliente cliente) {
		getSimpleJdbcTemplate().update("Update cliente set " +
				"apellidos=?, nombres=?, edad=?, sexo=?, dni=?,correo=? " +
				"where codigocliente=?",
				cliente.getApellidos(),cliente.getNombres(),cliente.getEdad(),
				cliente.getSexo(),cliente.getDni(),cliente.getCorreo(),cliente.getCodigocliente());
	}

	@Override
	public void insertarCliente(Cliente cliente) {
		int count= getSimpleJdbcTemplate().queryForInt("Select count(*) from cliente");
		String newcodigo = "000000" + String.valueOf(count+1);
		cliente.setCodigocliente(newcodigo.substring(newcodigo.length()-6));
		getSimpleJdbcTemplate().update("Insert into cliente (codigocliente, apellidos,nombres,edad, " + 
				"sexo,dni,correo) values  (?,?,?,?,?,?,?)",
				cliente.getCodigocliente(), cliente.getApellidos(),cliente.getNombres(),
				cliente.getEdad(), cliente.getSexo(),cliente.getDni(),cliente.getCorreo());
	}

	@Override
	public void eliminarCliente(String codigo) {
		getSimpleJdbcTemplate().update("Delete from cliente where  codigocliente = ?",
				codigo);
	}

	@Override
	public boolean validarAcceso(String dni, String clave) {
		boolean result=false;
		try{
		Cliente cliente = this.getClientePorDNI(dni);
		if (cliente.getClave().equals(clave))
			result = true;
		} catch (Exception ex){
			result=false;
		}
		return result;
	}

}
